package com.promote.algorithm;

/**
 * @ClassName MaxVowels
 * Description 定长子串中元音的最大数目 --力扣1456
 * @Author LiZiHao
 * Date 2021/11/12 15:15
 * @Version 1.0
 **/
public class MaxVowels {
    public int maxVowels(String s, int k) {

        int n = s.length();
        int count = 0;

        //计算前k个字符中的元音数
        for (int i = 0; i < k; ++i) {
            count += isVowels(s.charAt(i));
        }

        int ans = count;
        /**
         * 有三种情况
         * 1、右进和左出都有元音 抵消
         * 2、右进有元音，左出非元音 +1
         * 3、右进非元音，左出为元音 -1
         */
        for (int i = k; i < n; ++i) {
            count += isVowels(s.charAt(i)) - isVowels(s.charAt(i-k));
            ans = Math.max(ans,count);
        }
        return ans;
    }

    public int isVowels(char ch) {
        return ch=='a' || ch == 'e'|| ch =='i' || ch == 'o' || ch == 'u' ? 1:0;
    }
}
